/**
 * 在线用户类
 * 用于表示当前在线的用户信息，包括用户名、昵称、职业、浏览器信息、IP地址、地理位置、登录密钥和登录时间
 * 主要用于用户管理模块，以便于跟踪和管理在线用户的状态和信息
 */
package co.yixiang.modules.user.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

/**
 * 在线用户类
 * 实现了Serializable接口，以支持对象的序列化和反序列化
 * 使用Lombok的@Data注解自动生成getter和setter方法，减少冗余代码
 * 使用Lombok的@AllArgsConstructor和@NoArgsConstructor注解自动生成全参数和无参数构造函数，提高代码的可读性和易维护性
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class OnlineUser implements Serializable {

    /**
     * 用户名
     * 用于唯一标识一个用户
     */
    private String userName;

    /**
     * 昵称
     * 用户的友好名称，通常用于显示
     */
    private String nickName;

    /**
     * 职业
     * 描述用户的职业信息
     */
    private String job;

    /**
     * 浏览器信息
     * 描述用户使用的浏览器类型
     */
    private String browser;

    /**
     * IP地址
     * 用户的网络地址，用于跟踪用户来源
     */
    private String ip;

    /**
     * 地址
     * 用户的地理位置信息，基于IP地址获取
     */
    private String address;

    /**
     * 密钥
     * 用户登录时生成的唯一密钥，用于维持用户会话
     */
    private String key;

    /**
     * 登录时间
     * 用户成功登录的时间，用于会话管理和安全审计
     */
    private Date loginTime;

}
